<?
	/**
	* @desc Classe qui s'occupe des function de sécurité. Elle permet les fonctions de login et logou en plus
	* 		de donner accès aux endroits qui nécissitent un sécurité plus accrue 
	* @author	Yann Boisclair-Roy
	*/
	
	class Securite {
		var $objBD;
		
		/**
		* @desc Constructeur de class
		* @param Bd	objBD objet qui contrôle les accès à la base de données
		* @access public
		*/
		function Securite( $objBD ) {
			$this->objBD = $objBD;
		}
		
		/**
		* @desc Fait la vérification des informations d'un utilisateur (login) et redirige à l'endroit voulu
		* 		si l'opération échoue.
		* @param string urlError ( chemin vers lequelle l'usager sera redirigé )
		* @access public
		*/
		function verificationInformation( $urlError ) {
			if ( isset( $_SESSION[ 'utilisateur' ] ) && isset( $_SESSION[ 'motPasse' ] ) ) {
				/* vérification si le membre existe et si les informations de login sont bons */
				$objMembre = new Usagers( $this->objBD );
				$objMembre->setPassword( $_SESSION[ 'motPasse' ] );
				$objMembre->setUsername( $_SESSION[ 'utilisateur' ] );
				$objMembre->getInfos();
				if ( $objMembre->getNbElement() != 1  ) {
					/* mauvais login */
					unset( $membre, $_SESSION[ 'utilisateur' ], $_SESSION[ 'motPasse' ] );
					header( "location: " . $urlError );
					exit;
				}
				else {
					/* bon login */
					if( $objMembre->getType() == SECURITE_BLOGGER ) {
						$this->verificationBlogger( $objMembre->getNoMembre() );
					}
					$_SESSION[ 'security_level' ] = $objMembre->getType();;
				}
			}
			else{
				/* l'usager n'a pas tenter de s'enregistrer. On lui met donc le niveau le plus bas */
				$_SESSION[ 'security_level' ] = 0;
			}
		}
		
		/**
		* @desc Vérification si le mebre est du type "Blogger". Si oui, nous prendront en note la catégorie de blog de cet usager et le no de membre
		* @access private
		* @param Membres objMembre
		*/
		function verificationBlogger( $noMembre ) {
			$estValide = false;
			$_SESSION[ 'blog_no_membre' ] = $noMembre;
			$req = "SELECT noCategorie FROM categories WHERE noMembreProprio = " . $noMembre;
			$resultat = $this->objBD->query( $req );
			if( $this->objBD->getNbElement() > 0 ) {
				$_SESSION[ 'blog_no_categorie' ] = $resultat[ 0 ][ 'noCategorie' ];
				$estValide = true;
			}

			return $estValide;
		}
		
		
		
		/**
		* @desc Fonction qui évalue si l'usager enregistrer a le niveau d'accès nécessaire
		* 		pour visionner la page. Sinon, il est possible de rediriger celui-ci.
		* @param int niveauVoulu
		* @param string urlError
		* @access public
		*/
		function check( $niveauVoulu, $urlError = "rien" ) {
			$ok  = false;
			if( $niveauVoulu <= $_SESSION[ 'security_level' ] ){
				$ok = true;
			}
			elseif( $urlError != "rien" ){
				$this->logout();
				header( "location: .." . $urlError );
				exit;
			}
			return $ok;
		}	
		
		/**
		* @desc Fonction qui dé-enregistre un utilisateur
		* @access public
		*/
		function logout() {
			$_SESSION[ 'user_email' ] = '';
			$_SESSION[ 'motPasse' ] = '';
			$_SESSION[ 'security_level' ] = '';
			unset( $_SESSION[ 'user_email' ], $_SESSION[ 'motPasse' ], $_SESSION[ 'security_level' ]  );
			session_unregister( 'user_email' );
			session_unregister( 'motPasse' );
			session_unregister( 'security_level' );
		}
	}
?>